namespace GanagroLiteData
{
    using System;
    using System.Data.Entity;
    using System.Data;
    using System.Data.SqlClient;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Linq;
    using GeneralUtilities;

    public partial class GlContext : DbContext
    {

        public GlContext() : base(ConnectionString()) { }
        private static string ConnectionString()
        {
            SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
            sqlBuilder.DataSource = UtilityDB.GetServerName();
            sqlBuilder.InitialCatalog = UtilityDB.GetDbName();
            sqlBuilder.PersistSecurityInfo = true;
            sqlBuilder.IntegratedSecurity = false;
            sqlBuilder.MultipleActiveResultSets = true;
            sqlBuilder.UserID = GeneralUtilities.UtilityDB.GetUserName();
            sqlBuilder.Password = GeneralUtilities.UtilityDB.GetPwd();
            sqlBuilder.ApplicationName = "EntityFramework";

            return sqlBuilder.ToString();
        }
        public virtual DbSet<COLORE> COLORES { get; set; }
        public virtual DbSet<COMENTARIO> COMENTARIOS { get; set; }
        public virtual DbSet<ESTADO> ESTADOS { get; set; }
        public virtual DbSet<FINCA> FINCAS { get; set; }
        public virtual DbSet<GANADO> GANADOes { get; set; }
        public virtual DbSet<GANADO_OTROS> GANADO_OTROS { get; set; }
        public virtual DbSet<LOTE> LOTES { get; set; }
        public virtual DbSet<NOTA> NOTAS { get; set; }
        public virtual DbSet<OPERACIONE> OPERACIONES { get; set; }
        public virtual DbSet<PARAMETRO> PARAMETROS { get; set; }
        public virtual DbSet<PESAJE> PESAJES { get; set; }
        public virtual DbSet<RAZA> RAZAS { get; set; }
        public virtual DbSet<REVERSO> REVERSOS { get; set; }
        public virtual DbSet<TIPOS_OPERACION> TIPOS_OPERACION { get; set; }
        public virtual DbSet<ANALISIS_CEBA> ANALISIS_CEBA { get; set; }
        public virtual DbSet<Compra> Compras { get; set; }
        public virtual DbSet<GanadoActivo> GanadoActivoes { get; set; }
        public virtual DbSet<GananciaPorVenta> GananciaPorVentas { get; set; }
        public virtual DbSet<InventarioDetallado> InventarioDetalladoes { get; set; }
        public virtual DbSet<Muerte> Muertes { get; set; }
        public virtual DbSet<penultimopesajecarne> penultimopesajecarnes { get; set; }
        public virtual DbSet<PrimerPesajeCarne> PrimerPesajeCarnes { get; set; }
        public virtual DbSet<RepGananciaVida> RepGananciaVidas { get; set; }
        public virtual DbSet<RepMovimiento> RepMovimientos { get; set; }
        public virtual DbSet<REPORTE_CEBA> REPORTE_CEBA { get; set; }
        public virtual DbSet<ReporteReverso> ReporteReversos { get; set; }
        public virtual DbSet<RepPesajesYGanancia> RepPesajesYGanancias { get; set; }
        public virtual DbSet<ultimopesajecarne> ultimopesajecarnes { get; set; }
        public virtual DbSet<Venta> Ventas { get; set; }
        public virtual DbSet<VentasVsCompra> VentasVsCompras { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<COLORE>()
                .HasMany(e => e.GANADOes)
                .WithRequired(e => e.COLORE)
                .HasForeignKey(e => e.COLOR)
                .WillCascadeOnDelete(false);

            modelBuilder.Entity<ESTADO>()
                .HasMany(e => e.GANADOes)
                .WithOptional(e => e.ESTADO1)
                .HasForeignKey(e => e.ESTADO);

            modelBuilder.Entity<FINCA>()
                .HasMany(e => e.GANADOes)
                .WithOptional(e => e.FINCA1)
                .HasForeignKey(e => e.FINCA);

            modelBuilder.Entity<GANADO>()
                .Property(e => e.Tatuaje)
                .IsUnicode(false);

            modelBuilder.Entity<LOTE>()
                .HasMany(e => e.GANADOes)
                .WithOptional(e => e.LOTE1)
                .HasForeignKey(e => e.LOTE);

            modelBuilder.Entity<NOTA>()
                .Property(e => e.TEXTO)
                .IsUnicode(false);

            modelBuilder.Entity<RAZA>()
                .HasMany(e => e.GANADOes)
                .WithRequired(e => e.RAZA)
                .HasForeignKey(e => e.RAZA1)
                .WillCascadeOnDelete(false);

            modelBuilder.Entity<RAZA>()
                .HasMany(e => e.GANADOes1)
                .WithOptional(e => e.RAZA3)
                .HasForeignKey(e => e.RAZA2);

            modelBuilder.Entity<TIPOS_OPERACION>()
                .HasMany(e => e.OPERACIONES)
                .WithRequired(e => e.TIPOS_OPERACION)
                .WillCascadeOnDelete(false);

            modelBuilder.Entity<GanadoActivo>()
                .Property(e => e.tatuaje)
                .IsUnicode(false);

            modelBuilder.Entity<InventarioDetallado>()
                .Property(e => e.Fecha)
                .IsUnicode(false);

            modelBuilder.Entity<InventarioDetallado>()
                .Property(e => e.Tatuaje)
                .IsUnicode(false);

            modelBuilder.Entity<RepMovimiento>()
                .Property(e => e.OPERACION)
                .IsUnicode(false);
        }
    }
}
